Matlab Codes

Chapter 2

Matlab code 2.1: Matlab file “Figure 2-3.m”

%--------------------------------------------------------------------

% This code can be used to generate Figure 2.3

%--------------------------------------------------------------------

 

clear all;

close all;

%% the theoretical curve of the rotating target micro-Doppler characteristic

c = 3e8;

j = sqrt(-1);

fc = 10e9; % carrier frequency of transmitted signal

v = 0; % translational velocity of target

cord = 1000*[3 4 5]; % coordinates of local coordinate system's origin in the radar coordinate system

colo = [0 0 0]; % coordinates of radar in the radar coordinate system

R0 = cord-colo;

n = R0/sqrt(sum(R0.^2)); % unit vector of Line-of-Sight(LOS)

ae = [0 pi/4 pi/5]; % Euler angle

tgt = [0 0 0;3 1.5 1.5;-3 -1.5 -1.5]; % three point scatterers

w = [pi 2*pi pi]; % angular velocity of rotation

T = 0.8165; % rotating period

ri1 = [cos(ae(3)) sin(ae(3)) 0;-sin(ae(3)) cos(ae(3)) 0;0 0 1];

ri2 = [1 0 0;0 cos(ae(2)) sin(ae(2));0 -sin(ae(2)) cos(ae(2))];

ri3 = [cos(ae(1)) sin(ae(1)) 0;-sin(ae(1)) cos(ae(1)) 0;0 0 1];

ri = ri1*ri2*ri3; % initial rotation matrix

tn = length(tgt(1,:)); % number of scatterers

r0 = zeros(3); % scatterers in the local coordinate system

for i = 1:tn

    r0(i,:) = tgt(i,:)-colo;

end

r0r = ri*r0'; % scatterers in the reference coordinate system

w = ri*w'; % angular velocity of rotation in the reference coordinate system

omega = sqrt(sum(w.^2)); % angular frequency

we = w/omega; % unit vector of rotation

wr = [0 -we(3) we(2);we(3) 0 -we(1);-we(2) we(1) 0]; % skew symmetric matrix

t = 3; % radar illumimated time

prf = 2000; % pulse repetition frequency

pri = 1/prf; % pulse repetition interval

dt = 0:pri:t-pri; % time sampling interval

m = length(dt);

fmd = zeros(length(ae),m); % theoretical micro-Doppler frequency

for i = 1:m

    fmd(:,i) = (2*fc*omega/c)*((wr^2.*sin(omega*dt(i))+wr.*cos(omega*dt(i)))*ri*(r0'))'*n';

end

figure(1)

plot(dt,fmd)

xlabel('Time (s)')

ylabel('Frequency (Hz)')

axis([0,3,-1500,1500])

 

%% the time-frequency analysis result of the rotating target micro-Doppler characteristic

r = zeros(length(tgt(:,1)),length(dt)); % distance between the scatterers and radar

for i = 1:m

    for n = 1:length(tgt(:,1))

        r(n,i) = sqrt((R0'+v*dt(i)+((eye(3)+wr*sin(omega*dt(i))+wr^2*(1-cos(omega*dt(i))))*r0r(:,n)))'...

                     *(R0'+v*dt(i)+((eye(3)+wr*sin(omega*dt(i))+wr^2*(1-cos(omega*dt(i))))*r0r(:,n))));

    end

end

 

s = zeros(length(dt),length(tgt(:,1))); % echo signal matrix

for i = 1:length(tgt(:,1))

    s(:,i) = exp(j*2*pi*fc*2*r(i,:)'/c);

end

st = sum(s,2);

N = 200; % number of Gabor coefficients in time

Q = 50; % degree of oversampling

tfr = tfrgabor(st.',N,Q); % Gabor transform

tfr_r = fftshift(tfr,1);

figure(2)

contour(linspace(min(dt),max(dt),length(tfr_r(1,:))),linspace(-prf/2,prf/2-1,length(tfr_r(:,1))),tfr_r,70)

xlabel('Time (s)')

ylabel('Frequency (Hz)')

axis([0,3,-1500,1500])